/**

请考虑一颗二叉树上所有的叶子，这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。



举个例子，如上图所示，给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。

如果有两颗二叉树的叶值序列是相同，那么我们就认为它们是 叶相似 的。

如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的，则返回 true；否则返回 false 。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/leaf-similar-trees
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。


 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<TreeNode*> leaves1;
    vector<TreeNode*> leaves2;
    void Tarvel_In(TreeNode* node,vector<TreeNode*> & leaves)
    {
        if(node ==0)
            return;
        
        Tarvel_In(node->left,leaves);

        if(node->left == 0 && node->right == 0)
            leaves.push_back(node);

        Tarvel_In(node->right,leaves); 
    }

    bool leafSimilar(TreeNode* root1, TreeNode* root2) 
    {
        Tarvel_In(root1,leaves1);
        Tarvel_In(root2,leaves2);

        int Size1 = leaves1.size();
        int Size2 = leaves2.size();

        if(Size1 != Size2)
            return false;
        
        for(int i=0;i<Size1;i++)
        {
            if(leaves1[i]->val != leaves2[i]->val)
                return false;
        }
        return true;


    }
};